/**
 * 根据命令行运行参数，修改 /utils/utils.js 和 /project.config.json 里面的配置信息
 */
const fs   = require("fs");
const path = require('path');
// 获取命令行参数
const Args = process.argv.splice(2);
const env  = Args[0];

const switchEnv = function () {
    let self = this;
    self.dir = __dirname;
    self.GlobalConfig = {};
    self.type = 'dev';

    self.run = function () {
        self.type = env;
        self.GlobalConfig = self.getConfigSource();
        console.log('切换模式：',self.type);
        if(self.GlobalConfig !== false){
            self.setConfig();
            self.setProject();
        }
    };

    /**
     * 获取文件内容
     * @param path
     */
    self.getFileInfo = function (path) {
        let flag = fs.existsSync(self.dir + path);
        let data;
        if(flag){
            data = fs.readFileSync(self.dir + path);
            return data.toString();
        }else{
            console.log(self.dir + path,'不存在 ！');
            return false;
        }
    };
    /**
     * 写入文件内容
     * @param path
     * @param data
     */
    self.putFileInfo = function(path,data){
        return fs.writeFileSync(self.dir + path,data);
    };
    /**
     * 获取配置源内容
     */
    self.getConfigSource = function () {
        let result = self.getFileInfo('/package.json');
        let packageJSON;
        if(result === false){
            console.log('获取文件内容失败');
        }else{
            packageJSON = JSON.parse(result);
            if(packageJSON) {
                return packageJSON['config'];
            }
        }
        return false;
    };
    /**
     * 设置配置文件内容
     */
    self.setConfig = function () {
        let json   = self.getFileInfo('/utils/config.js');
        let config = self.GlobalConfig.hasOwnProperty(self.type) ? self.GlobalConfig[self.type] : false;
        let text;
        let version;
        let version_radio = 0;
        json = json.replace('module.exports = ','');
        json = json.replace('};','}');
        json = JSON.parse(json);
        if(config === false){
            console.log('没有找到对应模式的配置');
            return false;
        }
        for(let key in json){
            if(json.hasOwnProperty(key) && config.hasOwnProperty(key)){
                json[key] = config[key];
            }
        }
        //更新版本号
        // version = json['version'].toString();
        // version_radio = version.indexOf('.');
        // version_radio = version.length - version_radio - 1;
        // version = parseInt(version.replace('.',''));
        // version = version + 1;

        text = 'module.exports = ' + JSON.stringify(json,null, 2) + ';';
        let flag = self.putFileInfo('/utils/config.js',text);
        console.log('写入','/utils/config.js',(flag ? '失败' : '成功'));
    };
    /**
     * 修改项目文件内容
     */
    self.setProject = function () {
        let json = self.getFileInfo('/project.config.json');
        let text;
        let setKey = {
            appid:''
        };
        let config = self.GlobalConfig.hasOwnProperty(self.type) ? self.GlobalConfig[self.type] : false;
        json = JSON.parse(json);
        if(config === false){
            console.log('没有找到对应模式的配置');
            return false;
        }
        for(let key in setKey){
            if(json.hasOwnProperty(key) && config.hasOwnProperty(key)){
                json[key] = config[key];
            }
        }
        text = JSON.stringify(json,null, 2);
        let flag = self.putFileInfo('/project.config.json',text);
        console.log('写入','/project.config.json',(flag ? '失败' : '成功'));
    };
};
let ___s = new switchEnv();
___s.run();
